import pandas
from os.path import splitext


class Open_excel(object):
    def __init__(self, file, sheet_name, conversers=None, keep_default_na=False):
        '''
        传入初始属性
        :param file:文件路径 
        :param sheet_name: 表名
        :param conversers: 读出的数据类型
        :param keep_default_na: 空读出的值默认为空,而不是nan
        '''
        # 判断是要读取csv表格还是excel表格
        if splitext(file)[1] == ".csv":
            self.file = pandas.read_csv(file, sheet_name=sheet_name, converters=conversers,
                                        keep_default_na=keep_default_na)
        else:
            self.file = pandas.read_excel(file, sheet_name=sheet_name, converters=conversers,
                                          keep_default_na=keep_default_na)

    def read(self, dic=True):
        '''
        读出数据--列表套字典或者列表套列表
        :param dic: 默认读出列表套字典
        :return: 读出的各行数据
        '''
        if dic:
            return [self.file.loc[i].to_dict() for i in self.file.index.values]
        else:
            return self.file.values.tolist()

    def get_column(self, j):
        '''
        获取指定列
        :param j: 列索引[0开始]
        :return: 指定列的数据,存在列表里
        '''
        return [i[j] for i in self.read(False)]


if __name__ == '__main__':
    filePath = r"F:\pythonfile\ECshop\Script\testData\测试数据.xlsx"
    table = Open_excel(filePath, "注册", {"password": str, "email": str, "extend_field5": str})
    print(table.get_column(0))
